
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.SwingConstants;
import javax.swing.JSeparator;
import java.awt.Font;
import java.util.GregorianCalendar;

import javax.swing.JTextArea;
import javax.swing.JScrollPane;
/**
 * Fenêtre de consultation d'un lecteur
 * Code du JFrame généré par Window Builder/Swing Designer.
 * @author IUT,  A.Culet 
 * @version 1.0
 */

public class VueConsultLecteur extends Vue {

	private static final long serialVersionUID = 1L;
	
	private JPanel contentPane;
	private JTextField textFieldNumLecteur;
	private JTextField textFieldPrenom;
	private JTextField textFieldNom;
	private JTextField textFieldAdresse;
	private JTextField textFieldTelephone;
	private JTextArea textInfosEmprunts;
	
	// pour que les boutons soient des attributs, il faut faire "convert local to field"
	private JButton buttonRech;
	private JButton buttonAnnuler;
	private JButton buttonFermer;
	
	
	/**
	 * Create the frame.
	 */
	public VueConsultLecteur(Controleur controleur) {
		super(controleur);
		setTitle("Informations sur un lecteur");
		//setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 452, 515);
		contentPane = new JPanel();
		this.addWindowListener (new WindowAdapter() {
			public void windowClosing (WindowEvent e) {
			getControleur().fermerVue(VueConsultLecteur.this);
			}
		});
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Numéro Lecteur");
		lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel.setBounds(3, 66, 101, 15);
		contentPane.add(lblNewLabel);
		
		textFieldNumLecteur = new JTextField();
		textFieldNumLecteur.setBounds(112, 64, 114, 19);
		contentPane.add(textFieldNumLecteur);
		textFieldNumLecteur.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("Prenom");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(17, 137, 61, 35);
		contentPane.add(lblNewLabel_1);
		
		textFieldPrenom = new JTextField();
		textFieldPrenom.setEditable(false);
		textFieldPrenom.setBounds(112, 145, 214, 19);
		contentPane.add(textFieldPrenom);
		textFieldPrenom.setColumns(10);
		
		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueConsultLecteur.this);}
		});
		buttonAnnuler.setBounds(255, 98, 107, 25);
		contentPane.add(buttonAnnuler);
		
		buttonRech = new JButton("Rechercher");
		buttonRech.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().rechLecteur(textFieldNumLecteur.getText());
				}
		});
		buttonRech.setBounds(255, 61, 107, 25);
		contentPane.add(buttonRech);
		
		buttonFermer = new JButton("Fermer");
		buttonFermer.setEnabled(false);
		buttonFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueConsultLecteur.this);}
		});
		buttonFermer.setBounds(183, 438, 107, 25);
		contentPane.add(buttonFermer);
		
		JLabel lblNewLabel_2 = new JLabel("Nom");
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_2.setBounds(17, 178, 61, 15);
		contentPane.add(lblNewLabel_2);
		
		textFieldNom = new JTextField();
		textFieldNom.setEditable(false);
		textFieldNom.setColumns(10);
		textFieldNom.setBounds(112, 176, 214, 19);
		contentPane.add(textFieldNom);
		
		textFieldAdresse = new JTextField();
		textFieldAdresse.setEditable(false);
		textFieldAdresse.setColumns(10);
		textFieldAdresse.setBounds(112, 207, 275, 19);
		contentPane.add(textFieldAdresse);
		
		JLabel lblEditeur = new JLabel("Adresse");
		lblEditeur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblEditeur.setBounds(17, 209, 61, 15);
		contentPane.add(lblEditeur);
		
		textFieldTelephone = new JTextField();
		textFieldTelephone.setEditable(false);
		textFieldTelephone.setColumns(10);
		textFieldTelephone.setBounds(112, 238, 114, 19);
		contentPane.add(textFieldTelephone);
		
		JLabel lblDatedition = new JLabel("Telephone");
		lblDatedition.setHorizontalAlignment(SwingConstants.RIGHT);
		lblDatedition.setBounds(3, 240, 82, 15);
		contentPane.add(lblDatedition);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(112, 284, 250, 2);
		contentPane.add(separator);
		
		JLabel lblNewLabel_21 = new JLabel("Emprunts");
		lblNewLabel_21.setFont(new Font("Dialog", Font.BOLD | Font.ITALIC, 12));
		lblNewLabel_21.setBounds(197, 298, 107, 15);
		contentPane.add(lblNewLabel_21);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(29, 330, 399, 96);
		contentPane.add(scrollPane);
		
		textInfosEmprunts = new JTextArea();
		textInfosEmprunts.setEditable(false);
		scrollPane.setColumnHeaderView(textInfosEmprunts);
		}
	
	
	/**
	 * alimentation des composants d'affichage affichant les emprunts du lecteur
	 */
	public void alimente(Lecteur lect) {
			textInfosEmprunts.setText("");
			textFieldPrenom.setText(lect.getPrenom());
			textFieldNom.setText(lect.getNom());
			textFieldAdresse.setText(lect.getAdresse());
			textFieldTelephone.setText (lect.getTel());
			for (Emprunt e : lect.getEmprunts()) 
			{
					textInfosEmprunts.append("Titre : " + e.getExemplaire().getOuvrage().getTitre() +
							" - Numéro " + String.valueOf(e.getExemplaire().getNumero())+" - Date retour : " +
							ESDate.write(e.getDateFin())+"\n");
			}
	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			buttonRech.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			buttonFermer.setEnabled(false);
			textFieldPrenom.setText("");
			textFieldNom.setText("");
			textFieldAdresse.setText("");
			textFieldTelephone.setText("");
			textInfosEmprunts.setText("");
			break;
			}
		case finale: {
			buttonRech.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			buttonFermer.setEnabled(true);
			break;
			}
		}
	}
}
